Array.prototype.myReduce = function(fn, initValue) {
  let 
    _initValue,
    falsh = arguments.length

  this.forEach((value, index) => {
    if(index === 0) {
      // 参数数量小于2说明没传参数 initValue
      if(falsh < 2) {
        _initValue = value
        return 
      } else {
        _initValue = initValue
      }
    }
    _initValue = fn(_initValue, value, index, this)
  })

  return _initValue
}
const arr = [1, 2, 3]
console.log(arr.myReduce((initValue, value, index, arr) => {
  arr[index] = 1
  return initValue + value 
}, 1))
console.log(arr)

// function test(val) {
//   if(arguments.length) {
//     console.log("传参数了", val)
//   } else {
//     console.log("没传参数", val)
//   }
// }
// test()
// test(undefined)
// test(0)
// test(true)